Having done a number of different interfaces to excel this is the most lightweight and simple


// need these usings
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.OleDb;
using System.Data;
using System.IO;
 
 
 
 
string  fileName = string.Format("{0}\\TestData\\Contractors.xls", HostingEnvironment.ApplicationPhysicalPath) ;
 
 
            string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0", fileName);
 
            OleDbConnection conn = new OleDbConnection(connectionString);
 
            var adapter = new OleDbDataAdapter("SELECT * FROM [contractorsheet$]", connectionString);
            var ds = new DataSet();
 
            adapter.Fill(ds, "contractorSheet");
 
            var data = ds.Tables["contractorSheet"].AsEnumerable();
 
            foreach (var ret in data)  <--- ret is a line in the spreadsheet
            {
                Address address = new Address();
                address.streetAddress = ret.Field<string>("street");
                address.city = ret.Field<string>("city");
                address.state = ret.Field<string>("state");
                address.postalCode = ret.Field<double>("zip").ToString();
                db.Addresses.Add(address);
            }